﻿<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML><HEAD><TITLE>Gosub</TITLE>
<META http-equiv=Content-Type content="text/html; charset=UTF-8">
<LINK href="../css/commands.css" type=text/css rel=stylesheet>
<LINK media=print href="../css/print.css" type=text/css rel=stylesheet>
</HEAD>
<BODY>
<H1>Gosub</H1>

<P>跳到指定的标签并且继续执行，直到碰到 <A href="Return.htm">Return</A>。</P>
<P class=CommandSyntax>Gosub, Label</P>
<h3>参数 </h3>
<TABLE borderColor=#c0c0c0 cellSpacing=0 cellPadding=3 width="100%" border=1>
  <TR>
    <TD width="15%">Label</TD>
    <TD width="85%">跳转的标签名称，<A href="../Hotkeys.htm">热键标签</A>或者<A href="../Hotstrings.htm#label">热字串标签</A>，它执行 <EM>Label</EM> 下面的命令，直到碰到一个返回或退出。<A href="Return.htm">"Return"</A> 让脚本跳回到 Gosub 下面的首个命令并且在那继续执行。<A href="Exit.htm">"Exit"</A> 终止<A href="../misc/Threads.htm">当前的线程</A>。</TD></TR></TABLE>
<h3>说明</h3>
<P>和几乎所有其他命令的参数一样，<EM>Label</EM> 可以是一个<A href="../Variables.htm">变量</A>引用，例如 %MyLabel%，这时储存在变量中的名称被用来作为目标。然而，性能有略微地损失，因为目标 Label 每次都要“查找”，而不是仅在脚本首次运行时查找一次。</P>
<P>当使用一个动态 Label，例如 %MyLabel%，如果 Label 不存在，将显示一个错误对话框。要避免这种情况，可提前调用 <A href="../Functions.htm#IsLabel">IsLabel()</A>。例如：</P><PRE>if IsLabel(VarContainingLabelName)
    Gosub %VarContainingLabelName%</PRE>
<P>虽然 Gosub 可用于简单、多用途的子程序，但考虑为更复杂的用途而使用<A href="../Functions.htm">函数</A>。</P>
<h3>相关命令</h3>
<P><A href="Return.htm">Return</A>, <A href="../Functions.htm">Functions</A>, <A href="../Functions.htm#IsLabel">IsLabel()</A>, <A href="Block.htm">Blocks</A>, <A href="Loop.htm">Loop</A>, <A href="Goto.htm">Goto</A> </P>
<h3>范例</h3><PRE class=NoIndent>Gosub, Label1 
MsgBox, Label1 子程序已经返回（它已结束）。
return

Label1:
MsgBox, Label1 子程序正在运行。
return</PRE>
</BODY></HTML>